package com.hhkj.admin.conf.service.base;

import com.hhkj.admin.conf.common.cont.ConfConst;
import com.hhkj.admin.conf.domain.Conf;
import com.hhkj.admin.conf.model.extend.Rule;
import com.hhkj.admin.conf.model.dopo.ConfDo;
import com.hhkj.admin.conf.model.dopo.ConfPo;
import com.ruoyi.common.base.biz.service.base.BaseService;

/**
* @author admin
* @description 针对表【s_conf(系统配置表)】的数据库操作Service
* @createDate 2023-10-25 11:23:18
*/
public interface ConfService extends BaseService<Conf, ConfDo, ConfPo> {

    /**
     * 批量修改系统配置状态
     * @param conf 条件
     * @param effectiveCode 状态
     * @return 是否成功修改
     */
    boolean updateEffectiveCodeBatch(Conf conf, ConfConst.EffectiveCode effectiveCode);

    /**
     * 修改规则 （将原有生效的规则，改为失效，再新增规则）updateRule(withdrawalLimitReq, ConfConst.Code.WITHDRAWAL_LIMIT, WithdrawalLimit.class)
     * @param ruleReq （新规则请求）
     * @param code （规则编码）
     * @param entityClass （规则实体类）
     * @return
     */
    boolean updateRule(Rule ruleReq, ConfConst.Code code, Class<? extends Rule> entityClass);

    /**
     * 获取规则,（获取原有生效的规则） ReceivingAccount rule = getRule(ConfConst.Code.RECEIVING_ACCOUNT, ReceivingAccount.class);
     * @param code 规则编码
     * @param entityClass 规则实体类
     * @return
     * @param <T> 实体类
     */
    <T> T getRule(ConfConst.Code code, Class<T> entityClass);
}
